/**
 * 类并不是一开始就全部加载，比如为了节省资源和性能，不会把src文件夹下所有的类都加载到内存里，而是在需要时才会加载，提升速度
 * 以下情况会加载类
 * 1、访问类的静态变量，或给静态变量赋值
 * 2、new创建类的实例对象（隐式加载）
 * 3、调用类的静态方法
 * 4、子类初始化时
 * 5、其他情况在反射时讲
 *
 * 所有被标记为静态的内容，会在类刚加载的时候就分配，在对象创建之前就加载完成
 */
public class ClassLogic {
    static int a = 10;
    static int c = test2();  //这里有个疑问，static int c 调用test2()，test2()又返回c自己，可以这样操作么？
    //是可以的，定义和赋值是两个阶段，是分开的过程。虽然定义静态变量 int c = 静态方法，但在定义int c的时候已经给了一个初始值0，
    //所以在test2()里，return c 相当于return的就是c的初始值0.

    //从下面开始，创建静态方法，调用静态方法，创建构造函数，然后在Main8类里调用这个类，看哪个先打印，证明哪个先执行
    static int b = test();

    ClassLogic(){
        System.out.println("这是构造方法，构造类对象");
    }

    static int test(){
        System.out.println("初始化静态变量");
        return 1;
    }

    static int test2(){
        return c;
    }
}
